package cn.always.xiajia.admin.client.api.sys;

import java.util.List;
import java.util.Set;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;

/**
 * 菜单权限管理
 * 
 * @author xgj
 *
 */
@Tag(name = "RPC服务-菜单权限管理")
@FeignClient(name = "${xj.service.admin.name}${xj.service.admin.version:}/${xj.service.admin.version}/${xj.rpc.rpcurlprefix}/admin/sys/sysmenu")
public interface SysMenuClient {

	/**
	 * 获得拥有多个角色的用户编号集合
	 *
	 * @param roleIds 角色编号集合
	 * @return 用户编号集合
	 */
	@Schema(description = "获得拥有多个角色的用户编号集合")
	@PostMapping("/getuserroleidlistbyroleids")
	public Set<Long> getUserRoleIdListByRoleIds(@RequestParam(value = "roleIds") List<Long> roleIds);

	/**
	 * 判断是否有权限，任一一个即可
	 *
	 * @param userId 用户编号
	 * @param permissions 权限
	 * @return 是否
	 */
	@Schema(description = "判断是否有权限，任一一个即可")
	@PostMapping("/hasanypermissions")
	public boolean hasAnyPermissions(@RequestParam(value = "userId") Long userId,
			@RequestParam(value = "permissions") String... permissions);

	/**
	 * 判断是否有角色，任一一个即可
	 *
	 * @param userId 用户编号
	 * @param roles 角色数组
	 * @return 是否
	 */
	@Schema(description = "判断是否有角色，任一一个即可")
	@PostMapping("/hasanyroles")
	public boolean hasAnyRoles(@RequestParam(value = "userId") Long userId, @RequestParam(value = "roles") String... roles);

}
